<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 5.3.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"example.com","root":"/","scheme":"Muse","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":false,"scrollpercent":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":false,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}};
  </script>

  <meta name="description" content="CMake与CPPCheck集成  CMake集成 （https:&#x2F;&#x2F;blog.csdn.net&#x2F;weixin_30853329&#x2F;article&#x2F;details&#x2F;96814546）Cppcheck 可以理解编译数据库，可以用 CMake 生成这些。例如： 1$ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS&#x3D;ON 文件 compile_commands.json 在当前">
<meta property="og:type" content="article">
<meta property="og:title" content="cmake与cppcheck集成">
<meta property="og:url" content="http://example.com/2021/01/09/cmake%E4%B8%8Ecppcheck%E9%9B%86%E6%88%90/index.html">
<meta property="og:site_name" content="解救Z先生">
<meta property="og:description" content="CMake与CPPCheck集成  CMake集成 （https:&#x2F;&#x2F;blog.csdn.net&#x2F;weixin_30853329&#x2F;article&#x2F;details&#x2F;96814546）Cppcheck 可以理解编译数据库，可以用 CMake 生成这些。例如： 1$ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS&#x3D;ON 文件 compile_commands.json 在当前">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://example.com/2021/01/09/cmake%E4%B8%8Ecppcheck%E9%9B%86%E6%88%90/hero-image@2x.png">
<meta property="article:published_time" content="2021-01-09T15:06:55.000Z">
<meta property="article:modified_time" content="2021-01-09T15:18:57.370Z">
<meta property="article:author" content="greentree">
<meta property="article:tag" content="linux">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://example.com/2021/01/09/cmake%E4%B8%8Ecppcheck%E9%9B%86%E6%88%90/hero-image@2x.png">

<link rel="canonical" href="http://example.com/2021/01/09/cmake%E4%B8%8Ecppcheck%E9%9B%86%E6%88%90/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-CN'
  };
</script>

  <title>cmake与cppcheck集成 | 解救Z先生</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">解救Z先生</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="main-menu menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a>

  </li>
        <li class="menu-item menu-item-about">

    <a href="/aboutme/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a>

  </li>
  </ul>
</nav>




</div>
    </header>

    
  <div class="back-to-top">
    <i class="fa fa-arrow-up"></i>
    <span>0%</span>
  </div>


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://example.com/2021/01/09/cmake%E4%B8%8Ecppcheck%E9%9B%86%E6%88%90/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="greentree">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="解救Z先生">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          cmake与cppcheck集成
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>
              

              <time title="创建时间：2021-01-09 23:06:55 / 修改时间：23:18:57" itemprop="dateCreated datePublished" datetime="2021-01-09T23:06:55+08:00">2021-01-09</time>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <h1 id="CMake与CPPCheck集成"><a href="#CMake与CPPCheck集成" class="headerlink" title="CMake与CPPCheck集成"></a>CMake与CPPCheck集成</h1><img src="/2021/01/09/cmake%E4%B8%8Ecppcheck%E9%9B%86%E6%88%90/hero-image@2x.png" class title="title text" alt="alt text">

<h6 id="CMake集成-（https-blog-csdn-net-weixin-30853329-article-details-96814546）"><a href="#CMake集成-（https-blog-csdn-net-weixin-30853329-article-details-96814546）" class="headerlink" title="CMake集成 （https://blog.csdn.net/weixin_30853329/article/details/96814546）"></a>CMake集成 （<a target="_blank" rel="noopener" href="https://blog.csdn.net/weixin_30853329/article/details/96814546%EF%BC%89">https://blog.csdn.net/weixin_30853329/article/details/96814546）</a></h6><p>Cppcheck 可以理解编译数据库，可以用 CMake 生成这些。例如：</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON</span><br></pre></td></tr></table></figure>
<p>文件 compile_commands.json 在当前文件夹中创建。</p>
<p>现在像这样运行 Cppcheck：</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$ cppcheck --project=compile_commands.json </span><br><span class="line">$ cppcheck --xml --xml-version=<span class="number">2</span> --enable=all ./ <span class="number">2</span>&gt; cppcheck-report.xml</span><br><span class="line">$ cppcheck --xml --xml-version=<span class="number">2</span> --enable=all --project=compile_commands.json / <span class="number">2</span>&gt; cppcheck-report.xml</span><br><span class="line">    </span><br><span class="line"> ## add_definitions(<span class="string">&quot;_DCMAKE_EXPORT_COMPILE_COMMANDS=ON&quot;</span>)</span><br></pre></td></tr></table></figure>
<h6 id="lcov集成-（https-www-jianshu-com-p-a42bbd9de1b7）"><a href="#lcov集成-（https-www-jianshu-com-p-a42bbd9de1b7）" class="headerlink" title="lcov集成 （https://www.jianshu.com/p/a42bbd9de1b7）"></a>lcov集成 （<a target="_blank" rel="noopener" href="https://www.jianshu.com/p/a42bbd9de1b7%EF%BC%89">https://www.jianshu.com/p/a42bbd9de1b7）</a></h6><h6 id="gcov-gcovr-https-github-com-SonarOpenCommunity-sonar-cxx-wiki-Coverage-tracers"><a href="#gcov-gcovr-https-github-com-SonarOpenCommunity-sonar-cxx-wiki-Coverage-tracers" class="headerlink" title="gcov/gcovr (https://github.com/SonarOpenCommunity/sonar-cxx/wiki/Coverage-tracers)"></a>gcov/gcovr (<a target="_blank" rel="noopener" href="https://github.com/SonarOpenCommunity/sonar-cxx/wiki/Coverage-tracers">https://github.com/SonarOpenCommunity/sonar-cxx/wiki/Coverage-tracers</a>)</h6><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">gcovr -r WHERE_SONAR_SCANNER_WILL_RUN -x --object-directory&#x3D;ABSOLUTE_PATH_TO_GCOV_FILES_FOLDER &gt; report.xml</span><br><span class="line"></span><br><span class="line">gcovr -r .&#x2F; -x --object-directory&#x3D;&#x2F;home&#x2F;coresat&#x2F;code&#x2F;hy_c_code &gt; report.xml</span><br></pre></td></tr></table></figure>
<p><strong>Lcov</strong> is a <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Graphical_user_interface">graphical front-end</a> for gcov.</p>
<p><strong>Gcovr</strong> provides a utility for managing the use of gcov and generating summarized code coverage results.</p>
<p><strong>Gcov</strong> is a <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Code_coverage">source code coverage</a> analysis and statement-by-statement <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Profiling_(computer_programming)">profiling</a> tool. Gcov generates exact counts of the number of times each statement in a program is executed and annotates <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Source_code">source code</a> to add instrumentation. Gcov comes as a standard utility with the <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/GNU_Compiler_Collection">GNU Compiler Collection</a> (GCC) suite.</p>
<p>ps：sonar.sources 是配置指定扫描目录，要注意的是该路径是以sonar-project.properties这个文件所在的目录作为相对路径的！如果是多个目录，用分号隔开 </p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sonar-scanner \</span><br><span class="line">	-Dsonar.sources&#x3D;.&#x2F;lib,.os_if&#x2F;,.&#x2F;sbs,.&#x2F;ue\</span><br><span class="line">	...</span><br></pre></td></tr></table></figure>
<p>SonarOpenCommunity/sonar-cxx</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:&#x2F;&#x2F;github.com&#x2F;SonarOpenCommunity&#x2F;sonar-cxx&#x2F;wiki</span><br></pre></td></tr></table></figure>
<h6 id="SonarQube-configuration-client-side-linux-steps"><a href="#SonarQube-configuration-client-side-linux-steps" class="headerlink" title="SonarQube configuration client side (linux) steps"></a>SonarQube configuration client side (linux) steps</h6><p>1). CMakeLists.txt - it will generate compile_commands.json</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">add_definitions(&quot;-DCMAKE_EXPORT_COMPILE_COMMANDS&#x3D;ON&quot;)</span><br></pre></td></tr></table></figure>
<p>2). init_gcov.sh - it will generate compile_commands.json</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">add -DCMAKE_EXPORT_COMPILE_COMMANDS&#x3D;ON</span><br></pre></td></tr></table></figure>
<p>3). install cppcheck</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt-get install cppcheck</span><br></pre></td></tr></table></figure>
<p>4). install sonar-scanner-cli-4.4.0.2170-linux.zip to /home/coresat/sonar-scanner-4.4.0.2170-linux</p>
<p>5). export the path, add below lines into /etc/profile</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">export PATH&#x3D;&#x2F;home&#x2F;coresat&#x2F;sonar-scanner-4.4.0.2170-linux&#x2F;bin:$PATH</span><br></pre></td></tr></table></figure>
<p>6). enable the path by restarting the linux or run below command</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">source .&#x2F;etc&#x2F;profile</span><br></pre></td></tr></table></figure>
<p>7). all done, and run below command</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">.&#x2F;sonarqube.sh</span><br></pre></td></tr></table></figure>
<h6 id="Server-side-configuration"><a href="#Server-side-configuration" class="headerlink" title="Server side configuration"></a>Server side configuration</h6><p>1).  Install JDK11</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">upzip jdk-11.0.8_windows-x64_bin.zip to a local folder</span><br><span class="line">加入 jdk-11.0.8_windows-x64_bin\jdk-11.0.8\bin\ 到环境变量 Path</span><br></pre></td></tr></table></figure>
<p>2). Unzip sonarqube-7.9.4, and run sonarqube-7.9.4/bin/windows-x86-64/StartSonar.bat</p>
<p>3). Install and configure plugins</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:&#x2F;&#x2F;github.com&#x2F;SonarOpenCommunity&#x2F;sonar-cxx&#x2F;wiki&#x2F;Running-tools</span><br></pre></td></tr></table></figure>
<p>4). Open <a target="_blank" rel="noopener" href="http://localhost:9000/">http://localhost:9000</a> username=admin; password=admin</p>
<h6 id="SonarQube-Concept"><a href="#SonarQube-Concept" class="headerlink" title="SonarQube Concept"></a>SonarQube Concept</h6><p>Issue</p>
<p>​    1). Bug - An issue that represents something wrong in the code.</p>
<p>​    2). Code Smell - A maintainability-releated issue in the code</p>
<p>​    3). Vulnerabilities - A security-related issue which represents a backdoor for attackers.</p>
<p>Technical Debt - The estimated time required to fix all Maintainability issues/code smells;</p>
<p>Security Hotspot - A security-related issue highlighting a pieces of code that uses a security-sensitive API.</p>
<p>Leak Period - Shortly, leak period is time frame (usually since last release), where specified criteria are measured on newly added code. This allows to focus on quality of fresh code and stop the accumulation of technical debt.</p>
<p>Clean as You Code - means focusing on New Code for maximum Code Quality impact with minimum investment.</p>
<p>Issue Severity - BLOCKER, CRITICAL, MAJOR, MINOR, INFO</p>
<p>lssues lifecycle - Open, Confirmed, Resolved, Reopened, Closed. Resolve as fixed, Resolve as false positive, Resolve as won’t fix.</p>
<p>Cyclomatic Complexity meastures the minimum number of test cases required for full test coverage</p>
<p>Cognitive Complexity is a measure of how diffcult the application is to understand.</p>
<h6 id="Cyclomatic-Complexity（圈复杂度）"><a href="#Cyclomatic-Complexity（圈复杂度）" class="headerlink" title="Cyclomatic Complexity（圈复杂度）"></a>Cyclomatic Complexity（圈复杂度）</h6><p>圈复杂度(Cyclomatic Complexity)是一种代码复杂度的衡量标准。它可以用来衡量一个模块判定结构的复杂程度，数量上表现为独立线性路径条数，也可理解为覆盖所有的可能情况最少使用的测试用例数。圈复杂度大说明程序代码的判断逻辑复杂，可能质量低且难于测试和维护。程序的可能错误和高的圈复杂度有着很大关系。</p>
<p>sudo apt-get install python-pip</p>

    </div>

    
    
    

      <footer class="post-footer">
          <div class="post-tags">
              <a href="/tags/linux/" rel="tag"># linux</a>
          </div>

        


        
    <div class="post-nav">
      <div class="post-nav-item">
    <a href="/2021/01/09/%E8%87%AA%E6%97%8B%E9%94%81spin-lock%E5%92%8Craw-spin-lock/" rel="prev" title="自旋锁spin_lock和raw_spin_lock">
      <i class="fa fa-chevron-left"></i> 自旋锁spin_lock和raw_spin_lock
    </a></div>
      <div class="post-nav-item">
    <a href="/2021/01/10/Hexo%E6%9C%80%E5%B8%B8%E7%94%A8%E7%9A%84%E5%87%A0%E4%B8%AA%E5%91%BD%E4%BB%A4/" rel="next" title="Hexo最常用的几个命令">
      Hexo最常用的几个命令 <i class="fa fa-chevron-right"></i>
    </a></div>
    </div>
      </footer>
    
  </article>
  
  
  



          </div>
          

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
          <div class="post-toc motion-element"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#CMake%E4%B8%8ECPPCheck%E9%9B%86%E6%88%90"><span class="nav-number">1.</span> <span class="nav-text">CMake与CPPCheck集成</span></a><ol class="nav-child"><li class="nav-item nav-level-6"><a class="nav-link" href="#CMake%E9%9B%86%E6%88%90-%EF%BC%88https-blog-csdn-net-weixin-30853329-article-details-96814546%EF%BC%89"><span class="nav-number">1.0.0.0.0.1.</span> <span class="nav-text">CMake集成 （https:&#x2F;&#x2F;blog.csdn.net&#x2F;weixin_30853329&#x2F;article&#x2F;details&#x2F;96814546）</span></a></li><li class="nav-item nav-level-6"><a class="nav-link" href="#lcov%E9%9B%86%E6%88%90-%EF%BC%88https-www-jianshu-com-p-a42bbd9de1b7%EF%BC%89"><span class="nav-number">1.0.0.0.0.2.</span> <span class="nav-text">lcov集成 （https:&#x2F;&#x2F;www.jianshu.com&#x2F;p&#x2F;a42bbd9de1b7）</span></a></li><li class="nav-item nav-level-6"><a class="nav-link" href="#gcov-gcovr-https-github-com-SonarOpenCommunity-sonar-cxx-wiki-Coverage-tracers"><span class="nav-number">1.0.0.0.0.3.</span> <span class="nav-text">gcov&#x2F;gcovr (https:&#x2F;&#x2F;github.com&#x2F;SonarOpenCommunity&#x2F;sonar-cxx&#x2F;wiki&#x2F;Coverage-tracers)</span></a></li><li class="nav-item nav-level-6"><a class="nav-link" href="#SonarQube-configuration-client-side-linux-steps"><span class="nav-number">1.0.0.0.0.4.</span> <span class="nav-text">SonarQube configuration client side (linux) steps</span></a></li><li class="nav-item nav-level-6"><a class="nav-link" href="#Server-side-configuration"><span class="nav-number">1.0.0.0.0.5.</span> <span class="nav-text">Server side configuration</span></a></li><li class="nav-item nav-level-6"><a class="nav-link" href="#SonarQube-Concept"><span class="nav-number">1.0.0.0.0.6.</span> <span class="nav-text">SonarQube Concept</span></a></li><li class="nav-item nav-level-6"><a class="nav-link" href="#Cyclomatic-Complexity%EF%BC%88%E5%9C%88%E5%A4%8D%E6%9D%82%E5%BA%A6%EF%BC%89"><span class="nav-number">1.0.0.0.0.7.</span> <span class="nav-text">Cyclomatic Complexity（圈复杂度）</span></a></li></ol></li></ol></li></ol></li></ol></li></ol></li></ol></div>
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">greentree</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">13</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-tags">
        <span class="site-state-item-count">3</span>
        <span class="site-state-item-name">标签</span>
      </div>
  </nav>
</div>



      </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2021</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">greentree</span>
</div>
  <div class="powered-by">由 <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> & <a href="https://muse.theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Muse</a> 强力驱动
  </div>

        








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/muse.js"></script>


<script src="/js/next-boot.js"></script>




  















  

  

</body>
</html>
